/**
 * 
 */
package controller;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import metier.ChargerFichier;
import metier.FiltreMetier;

/**
 * @author xavier
 * 
 */
public class ClasserTexte {
	public static String classerTexteController(final FiltreMetier filtreUn,
			final FiltreMetier filtreDeux, final String cheminFichier) {
		// Déclaration des variables pour stocker les mots fréquents et rare des
		// deux filtres
		List<String> listeFrequentUn = null;
		List<String> listeFrequentDeux = null;
		List<String> listeRareUn = null;
		List<String> listeRareDeux = null;
		// Variables qui contiendront les compteurs de fréquence
		Integer compteurFrequentUn = 0;
		Integer compteurRareUn = 0;
		Integer compteurFrequentDeux = 0;
		Integer compteurRareDeux = 0;
		// Chargement du fichier et transformation du fichier à traiter en list.
		List<String> fichierEnListUn = filtreUn
				.transformationEnList(ChargerFichier.lireFichier(cheminFichier));
		List<String> fichierEnListDeux = filtreUn
				.transformationEnList(ChargerFichier.lireFichier(cheminFichier));
		// Passage du filtre des accents
		fichierEnListUn = filtreUn.accent(fichierEnListUn);
		fichierEnListDeux = filtreDeux.accent(fichierEnListDeux);
		// Passage du filtre des minuscule
		fichierEnListUn = filtreUn.minuscule(fichierEnListUn);
		fichierEnListDeux = filtreDeux.minuscule(fichierEnListDeux);
		// Passage du filtre de normalisation
		fichierEnListUn = filtreUn.normalisation(fichierEnListUn);
		fichierEnListDeux = filtreDeux.normalisation(fichierEnListDeux);
		// Passage du filtre adjectif possessif
		fichierEnListUn = filtreUn.adjectifPossessif(fichierEnListUn);
		fichierEnListDeux = filtreDeux.adjectifPossessif(fichierEnListDeux);
		// Passage du filtre de taille de mot
		fichierEnListUn = filtreUn.motTailleN(fichierEnListUn,
				filtreUn.getLongueur());
		fichierEnListDeux = filtreDeux.motTailleN(fichierEnListDeux,
				filtreDeux.getLongueur());
		// Passage du filtre de lemmatisation
		fichierEnListUn = filtreUn.lemmatisation(fichierEnListUn);
		fichierEnListDeux = filtreDeux.lemmatisation(fichierEnListDeux);
		// Chargement du fichier fréquent et du fichier rare de filtreUn
		if (StringUtils.isNotBlank(filtreUn.getFrequent())) {
			listeFrequentUn = filtreUn
					.transformationEnListPointVirgule(ChargerFichier
							.lireFichier(filtreUn.getFrequent()));
		}
		if (StringUtils.isNotBlank(filtreUn.getRare())) {
			listeRareUn = filtreUn
					.transformationEnListPointVirgule(ChargerFichier
							.lireFichier(filtreUn.getRare()));
		}
		// Chargement du fichier fréquent et du fichier rare de filtreUn
		if (StringUtils.isNotBlank(filtreDeux.getFrequent())) {
			listeFrequentDeux = filtreDeux
					.transformationEnListPointVirgule(ChargerFichier
							.lireFichier(filtreDeux.getFrequent()));
		}
		if (StringUtils.isNotBlank(filtreUn.getRare())) {
			listeRareDeux = filtreDeux
					.transformationEnListPointVirgule(ChargerFichier
							.lireFichier(filtreDeux.getRare()));
		}
		for (String motUn : fichierEnListUn) {
			if (listeFrequentUn.contains(motUn)) {
				++compteurFrequentUn;
			}
			if (listeRareUn.contains(motUn)) {
				++compteurRareUn;
			}
		}

		for (String motDeux : fichierEnListDeux) {
			if (listeFrequentDeux.contains(motDeux)) {
				++compteurFrequentDeux;
			}
			if (listeRareDeux.contains(motDeux)) {
				++compteurRareDeux;
			}
		}
		System.out.println(compteurFrequentUn+" " + compteurRareUn+" " + compteurFrequentDeux+" "
				+ compteurRareDeux);
		if (compteurFrequentUn + compteurRareUn > compteurFrequentDeux
				+ compteurRareDeux) {
			return "un";
		} else if (compteurFrequentUn + compteurRareUn < compteurFrequentDeux
				+ compteurRareDeux) {
			return "deux";
		} else {
			return "egal";
		}
	}

	public static void main(String[] args) {
		FiltreMetier filtreUn = new FiltreMetier();
		FiltreMetier filtreDeux = new FiltreMetier();
		System.out.print("TENNIS : ");
		classerTexteController(filtreUn, filtreDeux,
				"fichiersOriginaux/testTennis/testTennis0.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis1.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis2.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis3.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis4.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis5.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis6.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis7.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis8.txt");
		// System.out.print("TENNIS : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/testTennis/testTennis9.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test0.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test1.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test2.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test3.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test4.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test5.txt");
		// System.out.print("FOOT : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test6.txt");
		// System.out.print("??????????? : ");classerTexteController(filtreUn,
		// filtreDeux,
		// "fichiersOriginaux/test/test7.txt");
	}
}
